﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LogicaNegocio;
using Entidades;
using InformesYEstadisticas;
using AccesoBD;
namespace PresentacionEscritorio
{
    public partial class frmMdiContainer : Form
    {
        public string nombreUsuarioLogueado { get; set; }
        public int idUsuarioLogueado { get; set; }
        public int tipoFormPadre { get; set; }//Tipo=1 Recepcionista, 2 Medico, 3 Administrativo.
        private bool yaLlameAcerrarSesion;
        public Medico oM { get; set; }
        public CajaDiaria MiCaja { get; set; }
        public FormRecepcionista miFormRecepcionista { get; set; }
        public FormMedico miFormMedico { get; set; }
        public FormAdministrativa miFormAdministrativa { get; set; }

        public PagoMedico pagoMedicoSesion { get; set; }

        public frmMdiContainer()
        {
            InitializeComponent();
        }

        private void frmMdiContainer_Load(object sender, EventArgs e)
        {
            yaLlameAcerrarSesion = false;
            this.Text += " " + nombreUsuarioLogueado;
            
            //seteamos el form de donde viene, su form dueño, a quien despues le tiene que devolver la caja
            setearFormPadre();
        }
        private void setearFormPadre()
        {
            switch (tipoFormPadre)
            {
                case 1:
                    miFormRecepcionista = (FormRecepcionista)this.Owner;
                    //cargamos la caja con la lista de detalles
                    if (miFormRecepcionista != null)
                        MiCaja.DetallesCajaDiaria = new List<DetalleCajaDiaria>();
                    break;
                case 2:
                    miFormMedico = (FormMedico)this.Owner;
                    break;
                case 3:
                    miFormAdministrativa = (FormAdministrativa)this.Owner;
                    break;
            }

        }
        private void cerrarSesiónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("¿Está seguro de que desea cerrar sesión y salir?", "Confirmación", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (dr == DialogResult.OK)
            {
                cerrarSesión();
            }
        }

        private void cerrarSesión()
        {
            GestorUsuarios gu = new GestorUsuarios();

            bool res = gu.cerrarSesion(idUsuarioLogueado);
            if (res)
            {
                yaLlameAcerrarSesion = true;

                //cerramos todos los forms abiertos y volvemos a empezar
                Application.Restart();

                //Application.Exit();
            }
            else
            {
                MessageBox.Show("No se puede cerrar sesión");
            }
        }

        private void frmMdiContainer_FormClosing(object sender, FormClosingEventArgs e)
        {
            //pasar el objeto caja al form de inicio
            if (miFormRecepcionista != null)
                miFormRecepcionista.miCaja = MiCaja;
        }

        #region menuNuevo
        #region SubMenu Afiliacion

        private void nuevaAfiliaciónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmRegistrarAfiliacion frmAf = new frmRegistrarAfiliacion();
            frmAf.MdiParent = this;
            frmAf.Show();
        }

        private void consultarAfiliaciónToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            frmConsultarAfiliado formConsAf = new frmConsultarAfiliado();
            formConsAf.MdiParent = this;
            formConsAf.Show();
        }

        #region SubMenu Afiliaciones>Instituciones
        private void aBMToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmRegistrarInstitución formIns = new frmRegistrarInstitución();
            formIns.MdiParent = this;
            formIns.setOpcion(Opcion.OpRegistrar);
            formIns.Show();
        }

        private void consultarInstituciónToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            frmConsultarInstitución formConsInst = new frmConsultarInstitución();
            formConsInst.MdiParent = this;
            formConsInst.setOpcion(Opcion.OpConsultar);
            formConsInst.Show();
        }
        #endregion


        #endregion
        #region Submenu Profesionales
        private void toolStripMenuItem5_Click(object sender, EventArgs e)
        {
            frmRegistrarProfesional formProf = new frmRegistrarProfesional();
            formProf.setOpcion(Opcion.OpRegistrar);
            formProf.MdiParent = this;
            formProf.Show();
        }

        private void toolStripMenuItem6_Click(object sender, EventArgs e)
        {
            frmConsultarProfesional formConsProf = new frmConsultarProfesional();
            formConsProf.setOpcion(Opcion.OpConsultar);
            formConsProf.MdiParent = this;
            formConsProf.Show();
        }

        private void toolStripMenuItem7_Click(object sender, EventArgs e)
        {
            frmConsultarProfesional formConsProf = new frmConsultarProfesional();
            formConsProf.setOpcion(Opcion.OpModificar);
            formConsProf.MdiParent = this;
            formConsProf.Show();
        }

        private void toolStripMenuItem8_Click(object sender, EventArgs e)
        {
            frmConsultarProfesional formConsProf = new frmConsultarProfesional();
            formConsProf.setOpcion(Opcion.OpDarBaja);
            formConsProf.MdiParent = this;
            formConsProf.Show();
        }

        #region Submenu Profesional>Especialidades
        private void toolStripMenuItem10_Click(object sender, EventArgs e)
        {
            frmRegistrarEspecialidadPorMedico formEspXMEd = new frmRegistrarEspecialidadPorMedico();
            formEspXMEd.MdiParent = this;
            formEspXMEd.Show();
        }

        private void toolStripMenuItem11_Click(object sender, EventArgs e)
        {
            frmRegistrarEspecialidadPorMedico formEspXMEd = new frmRegistrarEspecialidadPorMedico();
            formEspXMEd.MdiParent = this;
            formEspXMEd.Show();
        }

        private void toolStripMenuItem12_Click(object sender, EventArgs e)
        {
            frmRegistrarEspecialidadPorMedico formEspXMEd = new frmRegistrarEspecialidadPorMedico();
            formEspXMEd.MdiParent = this;
            formEspXMEd.Show();
        }
        #endregion
        #region SubMenu Profesional>Horarios de atención
        private void toolStripMenuItem14_Click(object sender, EventArgs e)
        {
            frmRegistrarEspecialidadPorMedico formEspXMEd = new frmRegistrarEspecialidadPorMedico();
            formEspXMEd.MdiParent = this;
            formEspXMEd.Show();
        }

        private void toolStripMenuItem15_Click(object sender, EventArgs e)
        {
            frmRegistrarEspecialidadPorMedico formEspXMEd = new frmRegistrarEspecialidadPorMedico();
            formEspXMEd.MdiParent = this;
            formEspXMEd.Show();
        }

        private void toolStripMenuItem16_Click(object sender, EventArgs e)
        {
            frmRegistrarEspecialidadPorMedico formEspXMEd = new frmRegistrarEspecialidadPorMedico();
            formEspXMEd.MdiParent = this;
            formEspXMEd.Show();
        }
        #endregion


        #endregion
        #region Submenu Turnos
        #region SubMenu Turnos>Atención en consultorio
        private void toolStripMenuItem18_Click(object sender, EventArgs e)
        {
            frmGenerarAgendaTurnos formGen = new frmGenerarAgendaTurnos();
            formGen.MdiParent = this;
            formGen.Show();
        }

        private void toolStripMenuItem19_Click(object sender, EventArgs e)
        {
            frmGestionTurnos2 formGestion = new frmGestionTurnos2();
            formGestion.MdiParent = this;
            formGestion.Show();
        }

        private void toolStripMenuItem20_Click(object sender, EventArgs e)
        {
            frmAsistenciaMedico formAsistencia = new frmAsistenciaMedico();
            formAsistencia.MdiParent = this;
            formAsistencia.Show();
        }
        #endregion
        #region Submenu Turnos>Atención externa
        private void toolStripMenuItem22_Click(object sender, EventArgs e)
        {
            frmRegistrarLlamadaDeEmergencia formLlamada = new frmRegistrarLlamadaDeEmergencia();
            formLlamada.MdiParent = this;
            formLlamada.Show();
        }

        private void toolStripMenuItem23_Click(object sender, EventArgs e)
        {
            frmConsultarLlamadaDeEmergencias formConsLlamadas = new frmConsultarLlamadaDeEmergencias();
            formConsLlamadas.MdiParent = this;
            formConsLlamadas.Show();
        }
        #endregion
        #region Submenu Turnos>Pacientes
        private void nuevoPacienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmRegistrarPaciente formNvoPaciente = new frmRegistrarPaciente();
            formNvoPaciente.setOpcion(Opcion.OpRegistrar);
            formNvoPaciente.MdiParent = this;
            formNvoPaciente.Show();
        }

        private void consultarPacienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmConsultarPaciente formConsPaciente = new frmConsultarPaciente();
            formConsPaciente.MdiParent = this;
            formConsPaciente.Show();
        }
        #endregion
        #endregion
        #region SubMenu Atencion Medica
        private Medico obtenerMedico(long id) 
        {
           return Medicos.obtenerMedicoPorUsuario(id);
        }
        private void opcionesDelMedicoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmDatosPersonales formDatos = new frmDatosPersonales();
            formDatos.oM = obtenerMedico(idUsuarioLogueado);
            formDatos.MdiParent = this;
            formDatos.Show();
        }

        private void díaDeHoyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmAgendaDelDia formAgHoy = new frmAgendaDelDia();
            formAgHoy.oM = obtenerMedico(idUsuarioLogueado);
            formAgHoy.MdiParent = this;
            formAgHoy.Show();
        }

        private void planificadaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmAgendaPlanificada formAgPlanif = new frmAgendaPlanificada();
            formAgPlanif.oM = obtenerMedico(idUsuarioLogueado);
            formAgPlanif.MdiParent = this;
            formAgPlanif.Show();
        }

        private void historialDePagoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmAtencionesRealizadas formAtenciones = new frmAtencionesRealizadas();
            formAtenciones.MdiParent = this;
            formAtenciones.Show();
        }
        #endregion
        #region Submenu Caja
        #region Submenu Caja>Cobros
        private void toolStripMenuItem26_Click(object sender, EventArgs e)
        {
            frmCobroAtencionMédica formCobroAtMed = new frmCobroAtencionMédica();
            formCobroAtMed.MdiParent = this;
            formCobroAtMed.Show();
        }

        private void toolStripMenuItem27_Click(object sender, EventArgs e)
        {
            frmRegistrarCobroCuotas formCoborC = new frmRegistrarCobroCuotas();
            formCoborC.MdiParent = this;
            formCoborC.Show();
        }
        #endregion
        #region Submenu Caja>Egresos
        private void toolStripMenuItem29_Click(object sender, EventArgs e)
        {
            frmRegistrarPagoMedico formPagoMed = new frmRegistrarPagoMedico();
            formPagoMed.MdiParent = this;
            formPagoMed.Show();
        }

        private void toolStripMenuItem30_Click(object sender, EventArgs e)
        {
            frmPagoOtrosConceptos formPago = new frmPagoOtrosConceptos();
            formPago.MdiParent = this;
            formPago.Show();
        }
        #endregion
        private void toolStripMenuItem31_Click(object sender, EventArgs e)
        {
            frmConsultarCaja formConsCaja = new frmConsultarCaja();
            formConsCaja.MdiParent = this;
            formConsCaja.Show();
        }
        #endregion
        #region Menu Informes
        private void toolStripMenuItem65_Click(object sender, EventArgs e)
        {
            frmVisorRankingInstituciones form = new frmVisorRankingInstituciones();
            form.Show();
        }
        private void toolStripMenuItem68_Click(object sender, EventArgs e)
        {
            frmVisorEspecialidades form = new frmVisorEspecialidades();
            form.Show();
        }
        private void toolStripMenuItem67_Click(object sender, EventArgs e)
        {
            frmVisorAtencionesExternas form = new frmVisorAtencionesExternas();
            form.Show();
        }
        #endregion
        #region Submenu OtrosDatos
        #region Submenu OtrosDatos>Especialidades
        private void toolStripMenuItem34_Click(object sender, EventArgs e)
        {
            frmRegistrarEspecialidad frmregesp = new frmRegistrarEspecialidad();
            frmregesp.MdiParent = this;
            frmregesp.setOpcion(Opcion.OpRegistrar);
            frmregesp.Show();
        }
        private void toolStripMenuItem35_Click(object sender, EventArgs e)
        {
            frmConsultarEspecialidad frmCons = new frmConsultarEspecialidad();
            frmCons.MdiParent = this;
            frmCons.setOpcion(Opcion.OpConsultar);
            frmCons.Show();
        }
        private void toolStripMenuItem36_Click(object sender, EventArgs e)
        {
            frmConsultarEspecialidad frmCons = new frmConsultarEspecialidad();
            frmCons.MdiParent = this;
            frmCons.setOpcion(Opcion.OpModificar);
            frmCons.Show();
        }

        private void toolStripMenuItem37_Click(object sender, EventArgs e)
        {
            frmConsultarEspecialidad frmCons = new frmConsultarEspecialidad();
            frmCons.MdiParent = this;
            frmCons.setOpcion(Opcion.OpDarBaja);
            frmCons.Show();
        }
        #endregion
        #region Submenu OtrosDatos>Practicas
        private void toolStripMenuItem39_Click(object sender, EventArgs e)
        {
            frmRegistrarPractica frmNvaPractica = new frmRegistrarPractica();
            frmNvaPractica.MdiParent = this;
            frmNvaPractica.Show();
        }

        private void toolStripMenuItem40_Click(object sender, EventArgs e)
        {
            frmConsultarPractica frmCons = new frmConsultarPractica();
            frmCons.MdiParent = this;
            frmCons.Show();
        }

        private void toolStripMenuItem41_Click(object sender, EventArgs e)
        {
            //falta pasar opcion de modificar
            frmConsultarPractica frmCons = new frmConsultarPractica();
            frmCons.MdiParent = this;
            frmCons.Show();
        }

        private void toolStripMenuItem42_Click(object sender, EventArgs e)
        {
            //falta pasar opcion de dar baja
            frmConsultarPractica frmCons = new frmConsultarPractica();
            frmCons.MdiParent = this;
            frmCons.Show();
        }
        #endregion
        #region Submenu OtrosDatos>ObrasSociales
        private void toolStripMenuItem44_Click(object sender, EventArgs e)
        {
            frmRegistrarObraSocial frmNvaOS = new frmRegistrarObraSocial();
            frmNvaOS.MdiParent = this;
            frmNvaOS.Show();
        }

        private void toolStripMenuItem45_Click(object sender, EventArgs e)
        {
            frmRegistrarConvenioOS2 frmConv = new frmRegistrarConvenioOS2();
            frmConv.MdiParent = this;
            frmConv.Show();
        }
        #endregion
        #region Submenu OtrosDatos>Empleados
        private void toolStripMenuItem53_Click(object sender, EventArgs e)
        {
            frmRegistrarEmpleado frm1 = new frmRegistrarEmpleado();
            frm1.setOpcion(Opcion.OpRegistrar);
            frm1.MdiParent = this;
            frm1.Show();
        }
        private void toolStripMenuItem54_Click(object sender, EventArgs e)
        {
            frmConsultarEmpleado frm1 = new frmConsultarEmpleado();
            frm1.setOpcion(Opcion.OpConsultar);
            frm1.MdiParent = this;
            frm1.Show();
        }

        private void toolStripMenuItem55_Click(object sender, EventArgs e)
        {
            frmConsultarEmpleado frm1 = new frmConsultarEmpleado();
            frm1.setOpcion(Opcion.OpModificar);
            frm1.MdiParent = this;
            frm1.Show();
        }

        private void toolStripMenuItem56_Click(object sender, EventArgs e)
        {
            frmConsultarEmpleado frm1 = new frmConsultarEmpleado();
            frm1.setOpcion(Opcion.OpDarBaja);
            frm1.MdiParent = this;
            frm1.Show();
        }

        private void toolStripMenuItem57_Click(object sender, EventArgs e)
        {
            frmRegistrarUsuario frm1 = new frmRegistrarUsuario();
            frm1.MdiParent = this;
            frm1.Show();
        }
        #endregion
        #region Submenu OtrosDatos>Cargos
        private void toolStripMenuItem59_Click(object sender, EventArgs e)
        {
            frmRegistrarCargo frm1 = new frmRegistrarCargo();
            frm1.MdiParent = this;
            frm1.setOpcion(Opcion.OpRegistrar);
            frm1.Show();
        }
        private void toolStripMenuItem60_Click(object sender, EventArgs e)
        {
            frmConsultarCargos frmCons = new frmConsultarCargos();
            frmCons.setOpcion(Opcion.OpConsultar);
            frmCons.MdiParent = this;
            frmCons.Show();
        }
        private void toolStripMenuItem61_Click(object sender, EventArgs e)
        {
            frmConsultarCargos frmCons = new frmConsultarCargos();
            frmCons.setOpcion(Opcion.OpModificar);
            frmCons.MdiParent = this;
            frmCons.Show();
        }
        private void toolStripMenuItem62_Click(object sender, EventArgs e)
        {
            frmConsultarCargos frmCons = new frmConsultarCargos();
            frmCons.setOpcion(Opcion.OpDarBaja);
            frmCons.MdiParent = this;
            frmCons.Show();
        }

        #endregion

        private void toolStripMenuItem63_Click(object sender, EventArgs e)
        {
            frmFechasImportantes formFechas = new frmFechasImportantes();
            formFechas.MdiParent = this;
            formFechas.Show();
        }

        
        #endregion
        #region Submenu Seguridad
        private void toolStripMenuItem73_Click(object sender, EventArgs e)
        {
            frmRegistrarUsuario formUsr = new frmRegistrarUsuario();
            formUsr.MdiParent = this;
            formUsr.Show();
        }
        private void toolStripMenuItem75_Click(object sender, EventArgs e)
        {
            frmRoles formRoles = new frmRoles();
            formRoles.MdiParent = this;
            formRoles.Show();
        }
        
        #endregion
        private void visorDeAyudaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Help.ShowHelp(this, helpProvider1.HelpNamespace, HelpNavigator.Topic, "Bienvenido.html");
        }
        #endregion

        private void toolStripMenuItem66_Click(object sender, EventArgs e)
        {

        }

        private void toolStripMenuItem46_Click(object sender, EventArgs e)
        {

        }

        private void consultarConvenioConObraSocialToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void toolStripMenuItem48_Click(object sender, EventArgs e)
        {
            frmRegistrarPlanAfiliacion frmPlan = new frmRegistrarPlanAfiliacion();
            frmPlan.MdiParent = this;
            frmPlan.Show();
        }

        private void toolStripMenuItem49_Click(object sender, EventArgs e)
        {
            frmConsultarPlanAfiliacion frmPlan = new frmConsultarPlanAfiliacion();
            frmPlan.MdiParent = this;
            frmPlan.Show();
        }

        private void toolStripMenuItem51_Click(object sender, EventArgs e)
        {
            frmConsultarPlanAfiliacion frmPlan = new frmConsultarPlanAfiliacion();
            frmPlan.MdiParent = this;
            frmPlan.Show();
        }

        private void configuraciónInicialToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }



    }
}